﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;

namespace WindowsGame1
{
    class Enemigo1
    {
        private int anchoImagen = 40;
        private int altoImagen = 57;
        private Texture2D imagen;
        private int maxTimeExplosion = 60;
        private int numImagenes = 18;
        public int colisionDisparo = 0;
        private int countExplosion=0;
        private ContentManager Content;
        public Texture2D Imagen
        {
            get { return imagen; }
        }
        private Rectangle bounds;
        public Rectangle Bounds
        {
            get { return bounds; }
        }
        private Vector2 posicion;
        public Vector2 Posicion
        {
            get { return posicion; }
        }
        int altoVentana;
        int anchoVentana;
        public event EventHandler FueraDePantalla;
        public Enemigo1(Vector2 posicion, int altoVentana, int anchoVentana, ContentManager Content)
        {
            this.altoVentana = altoVentana;
            this.anchoVentana = anchoVentana;
            this.posicion = posicion;
            //Ya que los disparos pueden surgir en cualquier momento, y no al principio de la ejecución no tiene sentido tener un método
            //LoadContent que cargue las imágenes. En vez de eso las cargaremos en el constructor.
            this.Content = Content;
            imagen = Content.Load<Texture2D>("EnemigoBasico");
        }
        public void Update()
        {
            if (colisionDisparo == 0)
            {
                posicion.Y += 3;
                bounds = new Rectangle((int)posicion.X, (int)posicion.Y, anchoImagen, altoImagen);
                if (posicion.Y >= altoVentana)
                    FueraDePantalla(this, null);
            }
            else if(colisionDisparo==1)
            {
                imagen = Content.Load<Texture2D>("explosion");
                anchoImagen = 35;
                altoImagen = 50;
            }
        }
        public void Draw(SpriteBatch spbtch)
        {

            switch (colisionDisparo)
            {
                case 0:
                    spbtch.Draw(imagen, posicion, new Rectangle(0, 0, anchoImagen, altoImagen), Color.White);
                    break;
                case 1:
                    if (countExplosion < maxTimeExplosion)
                    {
                       // int dividir = maxTimeExplosion / numImagenes;
                       // int numImagenAncho = (countExplosion / numImagenes) /dividir%6;
                       // int numImagenAlto = (countExplosion / numImagenes) % 3;

                        int dividir = maxTimeExplosion / numImagenes;
                        int numImagenAncho = (countExplosion / dividir) % 6;
                        int numImagenAlto = (countExplosion / dividir) / 6;

                        Rectangle rectangle = new Rectangle(anchoImagen * numImagenAncho, altoImagen * numImagenAlto, anchoImagen, altoImagen);

                        spbtch.Draw(imagen, posicion, rectangle, Color.White);
                        countExplosion++;
                    }
                    else
                    {
                        colisionDisparo = 2;
                        countExplosion = 0;
                    }
                    
                    break;
                
            }
           
            
        }
    }
}
